package 牛客算法篇;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-03-12
 * Time:17:05
 */

import java.util.Arrays;
import java.util.HashMap;

/**
 *
 牛客算法篇:BM52 数组中只出现一次的两个数字
 描述
 一个整型数组里除了两个数字只出现一次，其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
 数据范围：数组长度 2≤n≤10002≤n≤1000，数组中每个数的大小 0<val≤10000000<val≤1000000
 要求：空间复杂度 O(1)O(1)，时间复杂度 O(n)O(n)
 提示：输出时按非降序排列。
 示例1
 输入：
 [1,4,1,6]
 返回值：
 [4,6]
 说明：
 返回的结果中较小的数排在前面
 */
public class FindNumsAppearOnce {
    public int[] FindNumsAppearOnce (int[] numbers) {
        // write code here
        HashMap<Integer, Integer> hash = new HashMap<>();
        for (int i = 0; i < numbers.length; i++) {
            hash.put(numbers[i], hash.getOrDefault(numbers[i], 0) + 1);
        }
        int[] num = new int[2];
        int index = 0;
        for (int i = 0; i < numbers.length; i++) {
            if(hash.get(numbers[i]) == 1){
                num[index++] = numbers[i];
            }
        }
        Arrays.sort(num);
        return num;
    }
}
